Programming language 2
2015-11-06
Programming Language 2
前言
刚刚结束这门课的期中考试,老师讲课内容很深,考试也很难,并且提高了自己对编程语言的理解,有必要做一个记录。
这一部分对应的是Algol68和Python里的一些特性。
Referfence & Value
x=x+2
,这个赋值中x是int型,按照我们的理解是把x的值加上2再赋值给x。然而,这只是现代的编程语言高度抽象化后的结果。
int x
,表示我们申明了一个整型,name是x。在Algol68中,这表示的是x是指向int的引用。
x=x+2
,右边的x会deref,从引用变为int,然后相加,最后x再指向这个int值。
最后,y=2,x=5。
在这个图中,r:=3
,3是int值,而左边的r是引用,指向的是x,也可以理解成 ref ref int类型。最后一个问题,z会不断deref,直到找到int值。
Array
-
维度: 在数组中,类型变得不重要了,反而维度很重要。相同的维度,他们就是相同的。 [1:100,1:n] real 与 [1:10,7:11] int 是相同的。
-
动态数组:
Flex [1:0] int obj
数组长度为0,动态的,当赋值的时候才确定长度。
Structure
mode bin_tree = struct(int data, REFbin_tree l_child, r_child)
支持递归定义。
Union
mode combine = UNION(int,bool)
combine x
,这里,x可以是int也可以时bool型
Expression
Iterator
迭代器是个好东西!!!!! 参考这里。
Category: class_study Tagged: class